package schema

import (
	"time"
)

// UserInfo 用户信息对象
type UserInfo struct {
	ID           string    `json:"id"`             // 用户ID
	HeadImg      string    `json:"head_img"`       // 头像
	Username     string    `json:"username"`       // 用户名
	RealName     string    `json:"real_name"`      // 真实姓名
	IsNewer      int       `json:"is_newer"`       // 新用户(1:新用户 2:老用户)
	InGroupTime  time.Time `json:"in_group_time"`  // 入群时间
	AllReciteDay int       `json:"all_recite_day"` // 总背诵天数
	Level        int       `json:"level"`          // 用户等级
	LevelExpired time.Time `json:"level_expired"`  // 过期时间
	Sex          int       `json:"sex"`            // 性别(0:保密 1:男 2:女)
	Phone        string    `json:"phone"`          // 手机号
	Intro        string    `json:"intro"`          // 个人介绍
	AccountNum   string    `json:"account_num"`    // 邀请码
	CodeImg      string    `json:"code_img"`       // 推荐二维码
	Pid          string    `json:"pid"`            // 上级用户ID
	Status       int       `json:"status"`         // 会员状态(1:正常 2:禁用)
	Creator      string    `json:"creator"`        // 创建者
	CreatedAt    time.Time `json:"created_at"`     // 创建时间
	UpdatedAt    time.Time `json:"updated_at"`     // 更新时间
	OpenId       string    `json:"open_id"`        // 微信openid
}

// UserInfoUpdate 用户信息对象
type UserInfoUpdate struct {
	ID           string    `json:"id"`             // 用户ID
	HeadImg      string    `json:"head_img"`       // 头像
	Username     string    `json:"username"`       // 用户名
	RealName     string    `json:"real_name"`      // 真实姓名
	IsNewer      int       `json:"is_newer"`       // 新用户(1:新用户 2:老用户)
	InGroupTime  time.Time `json:"in_group_time"`  // 入群时间
	AllReciteDay int       `json:"all_recite_day"` // 总背诵天数
	Level        int       `json:"level"`          // 用户等级
	LevelExpired time.Time `json:"level_expired"`  // 过期时间
	Sex          int       `json:"sex"`            // 性别(0:保密 1:男 2:女)
	Phone        string    `json:"phone"`          // 手机号
	Intro        string    `json:"intro"`          // 个人介绍
	AccountNum   string    `json:"account_num"`    // 邀请码
	CodeImg      string    `json:"code_img"`       // 推荐二维码
	Pid          string    `json:"pid"`            // 上级用户ID
	Status       int       `json:"status"`         // 会员状态(1:正常 2:禁用)
	Creator      string    `json:"creator"`        // 创建者
	CreatedAt    time.Time `json:"created_at"`     // 创建时间
	UpdatedAt    time.Time `json:"updated_at"`     // 更新时间
	OpenId       string    `json:"open_id"`        // 微信openid
}

func (a *UserInfoUpdate) ToUserInfo() *UserInfo {
	return &UserInfo{
		ID:           a.ID,
		HeadImg:      a.HeadImg,
		Username:     a.Username,
		RealName:     a.RealName,
		IsNewer:      a.IsNewer,
		InGroupTime:  a.InGroupTime,
		AllReciteDay: a.AllReciteDay,
		Level:        a.Level,
		LevelExpired: a.LevelExpired,
		Sex:          a.Sex,
		Phone:        a.Phone,
		Intro:        a.Intro,
		AccountNum:   a.AccountNum,
		CodeImg:      a.CodeImg,
		Pid:          a.Pid,
		Status:       a.Status,
		Creator:      a.Creator,
		CreatedAt:    a.CreatedAt,
		UpdatedAt:    a.UpdatedAt,
		OpenId:       a.OpenId,
	}
}

// UserInfoQueryParam 查询条件
type UserInfoQueryParam struct {
	PaginationParam
	ID             string    `form:"id"`             // 用户ID
	LikeHeadImg    string    `form:"head_img"`       // 头像
	HeadImg        string    `form:"head_img"`       // 头像
	LikeUsername   string    `form:"username"`       // 用户名
	Username       string    `form:"username"`       // 用户名
	LikeRealName   string    `form:"real_name"`      // 真实姓名
	RealName       string    `form:"real_name"`      // 真实姓名
	IsNewer        int       `form:"is_newer"`       // 新用户(1:新用户 2:老用户)
	InGroupTime    time.Time `form:"in_group_time"`  // 入群时间
	AllReciteDay   int       `form:"all_recite_day"` // 总背诵天数
	Level          int       `form:"level"`          // 用户等级
	LevelExpired   time.Time `form:"level_expired"`  // 过期时间
	Sex            int       `form:"sex"`            // 性别(0:保密 1:男 2:女)
	LikePhone      string    `form:"phone"`          // 手机号
	Phone          string    `form:"phone"`          // 手机号
	LikeIntro      string    `form:"intro"`          // 个人介绍
	Intro          string    `form:"intro"`          // 个人介绍
	LikeAccountNum string    `form:"account_num"`    // 邀请码
	AccountNum     string    `form:"account_num"`    // 邀请码
	LikeCodeImg    string    `form:"code_img"`       // 推荐二维码
	CodeImg        string    `form:"code_img"`       // 推荐二维码
	Pid            string    `form:"pid"`            // 上级用户ID
	Status         int       `form:"status"`         // 会员状态(1:正常 2:禁用)
	Creator        string    `form:"creator"`        // 创建者
	OpenId         string    `form:"open_id"`        // 微信openid
}

// UserInfoQueryOptions 查询可选参数项
type UserInfoQueryOptions struct {
	OrderFields []*OrderField // 排序字段
}

// UserInfoQueryResult 查询结果
type UserInfoQueryResult struct {
	Data       UserInfos
	PageResult *PaginationResult
}

// UserInfos 用户信息列表
type UserInfos []*UserInfo
